package com.vhall.component.entity.room.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.entity.thirduser.ThirdUserVO;
import com.vhall.component.framework.common.annotation.ParamName;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.List;

/**
 * SaveRoomDraftRequestVO-
 *
 * @author xing.wang
 * @date 2023/8/10
 */
@Data
public class SaveRoomDraftRequestVO extends RoomsEntityGuoXinVO implements Serializable {
    /**
     * 草稿 ID
     */
    @ParamName("room_draft_id")
    @JsonProperty("room_draft_id")
    private Integer roomDraftId;

    /**
     * 主播信息 list
     */
    @ParamName("anchor_info_list")
    @JsonProperty("anchor_info_list")
    private List<ThirdUserVO> anchorInfoList;

    /**
     * 投资依据信息 list
     */
    @ParamName("invest_ref_list")
    @JsonProperty("invest_ref_list")
    private List<InvestRefVO> investRefList;

    /**
     * 直播海报图片地址;短视频封面地址
     */
    @JsonProperty("image")
    @ParamName("image")
    @Pattern(regexp = "(\\\\s)?|(http(s)?://([\\w-]+\\.)+[\\w-]+[:]?([\\d]+)*(/[\\w- :./?%&=]*)?)", message = "图片地址格式不正确")
    private String imageUrl;

    /**
     * 是否改变了图片：0 否  1是
     */
    private Integer changeimg;

    /**
     * 数据是否有所更改
     */
    @JsonProperty("is_update")
    @ParamName("is_update")
    private Boolean isUpdate;

    /**
     * 直播名称
     */
    @Length(max = 30, message = "直播间名称长度最多30")
    private String name;

    /**
     * 直播开始时间
     */
    @ParamName(value = "begin_time")
    @JsonProperty(value = "begin_time")
    @Pattern(regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]+|[0-9]+[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$", message = "时间格式为2017-01-01 08:00:00")
    private String beginTime;

    /**
     * 直播标签
     */
    private String topics;

    private String from;

    /**
     * 直播说明
     */
    private String introduction;

    /**
     * 房间id
     */
    @ParamName("room_id")
    @JsonProperty("room_id")
    private String roomId;


    /**
     * 主播ids
     * 例如 1,2,3
     */
    @ParamName("anchor_ids")
    @JsonProperty("anchor_ids")
    private List<Integer> anchorIds;


    /**
     * 直播类型
     *
     * 1 页面叫互动直播
     * 2  假直播 页面叫纯直播、视频直播、录制直播
     * 3 点播
     */
    @ParamName(value = "live_type")
    @JsonProperty(value = "live_type")
    private Integer liveType;

    /**
     * 点播ID
     */
    @ParamName(value = "demand_vod_id")
    @JsonProperty(value = "demand_vod_id")
    private String demandVodId;



    /**
     * 挂件id
     */
    @JsonProperty("pendant_id")
    @ParamName(value = "pendant_id")
    private Integer pendantId;

    /**
     * 直播横竖屏 1横 2竖
     */
    @JsonProperty("video_type")
    @ParamName("video_type")
    private Integer videoType = 1;

    /**
     * 曝光海报
     */
    @ParamName("poster_url")
    @JsonProperty("poster_url")
    @Pattern(regexp = "(\\\\s)?|(http(s)?://([\\w-]+\\.)+[\\w-]+[:]?([\\d]+)*(/[\\w- :./?%&=]*)?)", message = "曝光海报地址格式不正确")
    private String posterUrl;



    /**
     * 直播类型: 直播类型: 1:投教类,2:投顾类,3:产品类,4:证券研究类
     */
    @ParamName("live_content_type")
    @JsonProperty("live_content_type")
    private Integer liveContentType;


    /**
     * 风险等级
     * 风险等级:0:无要求,1:R1保守型,2:R2谨慎型,3:R3稳健型,4:R4积极型,5:R5激进型
     */
    @ParamName("risk_live")
    @JsonProperty("risk_live")
    private String riskLive;
    /**
     * 投资期限
     * 投资期限:0:无要求,1:0(含)到1年(含),2:1(不含)到3年(含),3:3(不含)到5年(含),4:5年(不含)以上
     */
    @ParamName("invest_limit")
    @JsonProperty("invest_limit")
    private String investLimit;

    /**
     * 投资品种
     * 投资品种:0:无要求,1:固定收益,2:A项目,3:A,B项目,4:A,B,C 项目,5:A,B,C,D项目
     */
    @ParamName("invest_type")
    @JsonProperty("invest_type")
    private String investType;
    /**
     * 业务权限
     * 业务权限:无要求:0,1:融资融券,^:港股通,E:创业板,k:科创板,w:股票期权,x:北交所
     */
    @ParamName("permissions")
    @JsonProperty("permissions")
    private String permissions;

    /**
     * 合格投资者要求
     * 合格投资者要求:0:无要求,1:仅私募合同投资者可见,2:仅资管合同投资者可见
     */
    @ParamName("qualified_investor_requirements")
    @JsonProperty("qualified_investor_requirements")
    private String qualifiedInvestorRequirements;

    /**
     * 直播业务分类
     * 直播业务分类:10:养老,9:私募,8:资管,7:公募,6:融资融券,5:港股通,4:期权,3:投顾产品,2:基金投顾,1:咨询
     */
    @ParamName("live_business")
    @JsonProperty("live_business")
    private String liveBusiness;

    /**
     * 直播目的
     * 直播目的:1:业务开通,2:销售促成,3:股票交易,4:促活,5:其他
     */
    @ParamName("live_target")
    @JsonProperty("live_target")
    private String liveTarget;

    /**
     * 正式/测试房间标识 测试直播:0,正式直播:1
     */
    @JsonProperty("live_rormal")
    @ParamName("live_rormal")
    private Integer liveRormal;

    /**
     * OA审核关联,审核 id
     */
    @JsonProperty("review_oa_id")
    @ParamName("review_oa_id")
    private String reviewOaId;

    /**
     * OA审核关联,审核标题
     */
    @JsonProperty("review_oa_name")
    @ParamName("review_oa_name")
    private String reviewOaName;

    /**
     * OA审核关联,审核链接
     */
    @JsonProperty("review_oa_url")
    @ParamName("review_oa_url")
    private String reviewOaUrl;
    /**
     * 草稿 id
     */
    @JsonProperty("room_draft_record_id")
    @ParamName("room_draft_record_id")
    private Integer roomDraftRecordId;

    /**
     * 栏目id
     */
    @JsonProperty("column_id")
    @ParamName("column_id")
    private Integer columnId;
    /**
     * 账户验证: 0:不需账户验证,1:需账户验证 ,用户需要交易登录或绑定资金账号,方可进入直播
     */
    @JsonProperty("account_verification")
    @ParamName("account_verification")
    private String accountVerification;
    /**
     * 直播欢迎语
     */
    @JsonProperty("welcom_message")
    @ParamName("welcom_message")
    private String welcomMessage;
}
